﻿#region License
/* Copyright (C) 2009 Tim Coulter
 * 
 * This file is part of ExtremeML.
 * 
 * ExtremeML is free software: you can redistribute
 * it and/or modify it under the terms of the GNU General Public
 * License, as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 * 
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
 * the GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see http://www.gnu.org/licenses/.
*/
#endregion

namespace ExtremeML.Spreadsheet.Address
{
	/// <summary>
	/// Defines a mechanism for notifying dependent wrapper classes of changes to worksheet dimensions.
	/// </summary>
	internal interface IAddressDependency
	{
		/// <summary>
		/// Accepts notification that the specified number of empty
		/// rows have been inserted before the specified row index.
		/// </summary>
		/// <param name="rowIndex">The zero-based index of the row that follows the insertion point.</param>
		/// <param name="rowCount">The number of rows inserted.</param>
		void NotifyRowInsertion(int rowIndex, int rowCount);

		/// <summary>
		/// Accepts notification that the specified number of rows
		/// have been deleted, starting at the specified row index.
		/// </summary>
		/// <param name="rowIndex">The zero-based index of the first row deleted.</param>
		/// <param name="rowCount">The number of rows deleted.</param>
		void NotifyRowDeletion(int rowIndex, int rowCount);

		/// <summary>
		/// Accepts notification that the specified number of empty
		/// columns have been inserted before the specified column index.
		/// </summary>
		/// <param name="columnIndex">The zero-based index of the column that follows the insertion point.</param>
		/// <param name="columnCount">The number of columns inserted.</param>
		void NotifyColumnInsertion(int columnIndex, int columnCount);

		/// <summary>
		/// Accepts notification that the specified number of columns
		/// have been deleted, starting at the specified column index.
		/// </summary>
		/// <param name="columnIndex">The zero-based index of the first column deleted.</param>
		/// <param name="columnCount">The number of columns deleted.</param>
		void NotifyColumnDeletion(int columnIndex, int columnCount);
	}
}
